java - 在Java中将字符串转换为 float 而不对其进行舍入
全部标签 我有一个Seller模型,其中有_manyItems。我想获得卖家所有商品的总售价。在seller.rb我有deftotal_item_costitems.to_a.sum(&:sale_price)end如果所有商品都有促销价,这会很好用。但是,如果它们尚未售出,则sale_price为零并且total_item_cost中断。在我的应用中,sale_price可以是nil或零。在我的total_item_cost方法中,如何将nil值视为零? 最佳答案 items.map(&:sale_price).compact.sum或it
在Ruby2.2.0中,为什么:BigDecimal.new(34.13985572755337,9)等于34.0但是BigDecimal.new(34.13985572755338,9)等于34.1398557?请注意,我在64位机器上运行它。 最佳答案 用字符串而不是float初始化一般来说,您无法通过float获得可靠的行为。您错误地使用Float值而不是String值初始化BigDecimals,这在一开始就引入了一些不精确性。例如,在我的64位系统上:float1=34.13985572755337float2=34.13
我的理解是否正确,即使用RubyBigDecimal类型(即使具有不同的精度和标度长度)应该准确计算还是我应该预测浮点恶作剧?我在Rails应用程序中的所有值都是BigDecimal类型,我看到了一些错误(它们确实有不同的小数长度),希望这只是我的方法而不是我的对象类型。 最佳答案 使用浮点运算时有两个常见的陷阱。第一个问题是Rubyfloat具有固定的精度。在实践中,这要么是1)对您来说没问题,要么2)灾难性的,或者3)介于两者之间。请考虑以下事项:#float1.0e+25-9999999999999999900000000.0
如何在ruby中模拟类Java注解?(好吧,我有答案了,概括一下http://bens.me.uk/2009/java-style-annotations-in-ruby) 最佳答案 本文改编自apieceofcodeIwroteinananswertoanotherquestion几个星期前,虽然它当然不是原创的。这是一个著名的Ruby习语,毕竟它已经使用了很多年,至少从rakes的desc方法开始.moduleAnnotationsdefannotations(meth=nil)return@__annotations__[me
我有一个相当简单的正则表达式,但我想使用命名正则表达式使其更清晰,然后迭代结果。测试字符串:testing_string="111x222b333"我的正则表达式:regexp=%r{(?[0-9]{3}){0}(?[0-9]{3}){0}(?[0-9]+){0}\gx\gb\g}xdimensions=regexp.match(testing_string)这项工作就像一个魅力,但问题出在这里:dimensions.each{|k,v|dimensions[k]=my_operation(v)}#ERROR!undefinedmethod`each'for#.MatchData对象中
我需要在ruby中删除字符串开头和结尾的换行符(某种修整)。但只是在开头和结尾......位于字符串中间的新行必须保持不变。谢谢! 最佳答案 您可以使用String#strip方法。"\tgoodbye\r\n".strip#=>"goodbye" 关于ruby-如何删除Ruby字符串开头和结尾的换行符,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7167178/
我记得有一次因为在Python中连接字符串而受到责骂。有人告诉我,在Python中创建一个字符串列表并稍后加入它们会更有效。我将这种做法应用到JavaScript和Ruby中,尽管我不确定这在后者中是否有同样的好处。谁能告诉我在Ruby编程语言中加入字符串数组并调用:join或根据需要连接字符串是否更有效(在资源和执行方面)?谢谢。 最佳答案 自己用Benchmark试试类。require"benchmark"n=1000000Benchmark.bmbmdo|x|x.report("concatenation")dofoo=""n
这看起来非常低效。谁能给我一个更好的Ruby方式。defround_valuex=(self.value*10).round/10.0#roundstotwodecimalplacesr=x.modulo(x.floor)#findsremainderf=x.floorself.value=casewhenr.between?(0,0.25)fwhenr.between?(0.26,0.75)f+0.5whenr.between?(0.76,0.99)f+1.0endend 最佳答案 classFloatdefround_point
例如,我有这个数组(大小可变):x=["1.111","1.122","1.250","1.111"]我需要找到最常见的值(在本例中为“1.111”)。有没有简单的方法可以做到这一点?提前致谢!编辑#1:谢谢大家的回答!编辑#2:我已经根据Z.E.D.的信息更改了我接受的答案。再次感谢大家! 最佳答案 ruby#!/usr/bin/ruby1.8defmost_common_value(a)a.group_bydo|e|eend.values.max_by(&:size).firstendx=["1.111","1.122","1.
One\nTwo\nThree\nFour\nremove_lines(2)将删除前两行,留下字符串:Three\nFour\n 最佳答案 s.to_a[2..-1].join>>s="One\nTwo\nThree\nFour\n"=>"One\nTwo\nThree\nFour\n">>s.to_a[2..-1].join=>"Three\nFour\n" 关于ruby-如何从Ruby中的字符串中删除前n行?,我们在StackOverflow上找到一个类似的问题: